const sqlite3 = require('sqlite3').verbose();
const path = require('path');
const fs = require('fs');

// 确保data目录存在
const dataDir = path.join(__dirname, '../data');
if (!fs.existsSync(dataDir)) {
  fs.mkdirSync(dataDir);
}

const db = new sqlite3.Database(path.join(dataDir, 'database.sqlite'), (err) => {
  if (err) {
    console.error('数据库连接失败:', err);
    process.exit(1);
  }
  console.log('数据库连接成功');
  initDatabase();
});

function initDatabase() {
  db.serialize(() => {
    // 创建用户表
    db.run(`CREATE TABLE IF NOT EXISTS user (
      id INTEGER PRIMARY KEY AUTOINCREMENT,
      username VARCHAR(30) NOT NULL,
      password VARCHAR(30) NOT NULL,
      createAt VARCHAR(19) NOT NULL
    )`, (err) => {
      if (err) console.error('创建user表失败:', err);
    });

    // 创建微信公众号粉丝表
    db.run(`CREATE TABLE IF NOT EXISTS mpuser (
      id INTEGER PRIMARY KEY AUTOINCREMENT,
      nickname TEXT,
      openid TEXT UNIQUE,
      appid TEXT,
      status TEXT DEFAULT '0',
      photo TEXT,
      country TEXT,
      province TEXT,
      city TEXT,
      unionid TEXT,
      tag TEXT,
      createAt TEXT NOT NULL,
      UNIQUE(openid, appid)
    )`, (err) => {
      if (err) {
        console.error('创建mpuser表失败:', err);
      } else {
        console.log('mpuser表创建/检查完成');
      }
    });
  });
}

// 添加错误处理
db.on('error', (err) => {
  console.error('数据库错误:', err);
});

process.on('exit', () => {
  db.close((err) => {
    if (err) console.error('关闭数据库失败:', err);
  });
});

module.exports = db; 